// Tencent is pleased to support the open source community by making
// 蓝鲸智云 - 监控平台/日志平台 (BlueKing - Monitor/Log) available.
// Copyright (C) 2017-2022 THL A29 Limited, a Tencent company. All rights reserved.
// Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at http://opensource.org/licenses/MIT
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.
//

package define

import "time"

type BenchmarkOptions struct {
	Enabled             bool              `config:"enabled"`
	Iteration           int               `config:"iteration" mapstructure:"iteration"`
	Interval            time.Duration     `config:"interval" mapstructure:"interval"`
	RandomAttributeKeys []string          `config:"random_attribute_keys" mapstructure:"random_attribute_keys"`
	RandomResourceKeys  []string          `config:"random_resource_keys" mapstructure:"random_resource_keys"`
	Attributes          map[string]string `config:"attributes" mapstructure:"attributes"`
	Resources           map[string]string `config:"resources" mapstructure:"resources"`
	DimensionsValueType string            `config:"dimensions_value_type" mapstructure:"dimensions_value_type"` // 支持 int/float/bool/string
}

type TracesOptions struct {
	BenchmarkOptions `config:"_,inline"`
	SpanCount        int `config:"span_count" mapstructure:"span_count"`
	SpanKind         int `config:"span_kind" mapstructure:"span_kind"`
}

type MetricsOptions struct {
	BenchmarkOptions `config:"_,inline"`
	MetricName       string   `config:"metric_name" mapstructure:"metric_name"`
	Value            *float64 `config:"value" mapstructure:"value"`
	GaugeCount       int      `config:"gauge_count" mapstructure:"gauge_count"`
	CounterCount     int      `config:"counter_count" mapstructure:"counter_count"`
	HistogramCount   int      `config:"histogram_count" mapstructure:"histogram_count"`
}
